Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.01.2017, 16:28
Интересующийся
Отправить личное сообщение для kravru Посмотреть профиль Найти все сообщения от kravru
 
Регистрация: 30.03.2010
Сообщений: 17

улучшение подгрузки новостей по клику
Есть новости привязанные к разным страницам.
На главной показываются все новости сплошняком, а на конкретных страницах показываются новости привязанные к соответствующей странице.
Хочется сначала показывать по 5 последних новостей, а дальше подгружать по нажатию "Смотреть больше".
Хочется модифицировать имеющийся код, чтобы можно было передавать id страницы, для которой нужно подгрузить новости (а если он не задан, то показываются все).
основной скрипт
<script type="text/javascript" src="/js/jquery-1.11.2.min.js"></script>

<div id="content">
<?php
require_once $_SERVER['DOCUMENT_ROOT']."/config.php";

	$Config['NewsOnPage']=5;
	$lSQL2 =" SELECT id, daten as date_sort, DATE_FORMAT(daten, '%d.%m.%Y') AS daten, name, visible ";
	$lSQL2.=" FROM proekt_news	WHERE visible='Y'	";
	$lSQL2.=" ORDER BY date_sort Desc, id Desc	LIMIT {$Config['NewsOnPage']} ";
	$lRes2=mysql_query($lSQL2) or die("Не удается выполнить запрос.");
	$lRows2=mysql_num_rows($lRes2);
	while ($lRow2=mysql_fetch_array($lRes2)) {
		$lRow2["name"]=stripslashes($lRow2["name"]);
		echo "<div class='h3'><h3>{$lRow2["name"]}</h3></div>";
	}

?>
</div>
<div class='text-center' id='load'><a href='#' class='btn' onclick='return false;'>Смотреть больше</a></div>
<!-- ТУТ НАДО передавать id страницы (idpage), для которой нужно подгрузить новости (а если он не задан, то показываются все) -->


<div><br />А тут ниже идет просто какой-то текст: бла-бла-бла</div>


<script type="text/javascript">
$(document).ready(function(){
	$("#imgLoad").hide();	//Скрываем прелоадер
});
var num = 5; //чтобы знать с какой записи вытаскивать данные
$(function() {
	//$("#load div").click(function(){ //Выполняем если по кнопке кликнули
	$("#load a").click(function(){ //Выполняем если по кнопке кликнули
		$("#imgLoad").show(); //Показываем прелоадер
		$.ajax({
			url: "ajax.php",
			type: "GET",
			data: {"num": num},
//<!-- ТУТ НАДО передавать id страницы (idpage), для которой нужно подгрузить новости (а если он не задан, то показываются все) -->
			cache: false,
			success: function(response){
				if (response == 0) {	// смотрим ответ от сервера и выполняем соответствующее действие
					//alert("Больше нет записей");
					$("#imgLoad").hide();
					$("#load").hide();
				}
				else {
					$("#content").append(response);
					num = num + 5;
					$("#imgLoad").hide();
				}
			}
		});
	});
});
</script>

и ajax.php
<?php
header("Content-type: text/html; charset=windows-1251");
require_once $_SERVER['DOCUMENT_ROOT']."/config.php";
$Config['NewsOnPage']=5;


if (isset($_GET['num'])) {
	$num = $_GET['num'];
	//Вытаскиваем из таблицы $Config['NewsOnPage'] новостей начиная с $num
	$query = "SELECT id, daten as date_sort, DATE_FORMAT(daten, '%d.%m.%Y') AS daten, name, visible ";
	$query.= "FROM proekt_news	WHERE visible='Y' ";
	if (isset($_GET['idpage']) and !empty($_GET['idpage']))
		$query.= " and pageid={$_GET['idpage']} ";
	$query.= " ORDER BY date_sort Desc, id Desc	LIMIT {$num}, {$Config['NewsOnPage']} "
	$result = mysql_query($query);
	if (mysql_num_rows($result) > 0) {
		while ($lRow2 = mysql_fetch_array($result)) {
			$num++;
			echo "<div class='h3'><h3>{$lRow2["name"]}</h3></div>";
		}
		//sleep(1); //Сделана задержка в 1 секунду чтобы можно проследить выполнение запроса
	}
	else {
		echo 0; //Если записи закончились
	}
}

?>

Последний раз редактировалось kravru, 19.01.2017 в 17:09.
Ответить с цитированием
  #2 (permalink)  
Старый 19.01.2017, 17:02
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Код отформатируйте иначе не получите ответа.
Ответить с цитированием
  #3 (permalink)  
Старый 19.01.2017, 17:09
Интересующийся
Отправить личное сообщение для kravru Посмотреть профиль Найти все сообщения от kravru
 
Регистрация: 30.03.2010
Сообщений: 17

Спасибо за подсказку.
Ответить с цитированием
  #4 (permalink)  
Старый 19.01.2017, 17:25
Интересующийся
Отправить личное сообщение для kravru Посмотреть профиль Найти все сообщения от kravru
 
Регистрация: 30.03.2010
Сообщений: 17

я понимаю что где-то здесь
<div class='text-center' id='load'><a href='#' class='btn' onclick='return false;'>Смотреть больше</a></div>

нужно вставить невидимое поле с нужным idpage

а потом здесь
data: {"num": num, "idpage": СЮДА-ВСТАВИТЬ},

его передать
Ответить с цитированием
  #5 (permalink)  
Старый 19.01.2017, 17:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Значит можно поместить ID страницы, которое вас интересует и в кнопку формирующую запрос, например в атрибут data-post, извлекая его и отправляя клиенту. Но вообще-то, по уму, этот идентификатор должен содержать и URL текущей страницы, из которого его можно извлечь. Так что в общем-то проблем не должно быть.
Ответить с цитированием
  #6 (permalink)  
Старый 19.01.2017, 17:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от kravru
а потом здесь
data: {"num": num, "idpage": СЮДА-ВСТАВИТЬ}
да, осталось определиться откуда ID можно взять.
Ответить с цитированием
  #7 (permalink)  
Старый 19.01.2017, 18:01
Интересующийся
Отправить личное сообщение для kravru Посмотреть профиль Найти все сообщения от kravru
 
Регистрация: 30.03.2010
Сообщений: 17

Вот так придумал (вроде работает)
добавил
<a id='idpage' name='ТУТ-ИД-СТРАНИЦЫ'></a>

а ниже
var idpage = document.getElementById('idpage').name;
...
data: {"num": num, "idpage": idpage},
Ответить с цитированием
  #8 (permalink)  
Старый 19.01.2017, 18:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А может все таки из url, или это боком в вашей навигации?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Внутри разворачивающегося по клику DIVа не работают ссылки JavaScriptNoob Элементы интерфейса 2 17.11.2015 00:01
скрыть/показать блок по клику nmlgko Общие вопросы Javascript 5 03.05.2015 15:16
По клику на картинку с ссылкой открывается портфолио, а нужен переход по ссылке nitoiti Общие вопросы Javascript 7 08.09.2014 14:39
Открытие/закрытие дива по клику ссылки и закрытие по клику вне слоя vertmann Общие вопросы Javascript 3 18.11.2013 14:36
Помогите сделать так чтоб по клику открывалось и по клику же закрывалось Maxsl_89 Элементы интерфейса 1 25.10.2013 16:11